#ifndef UTIL_H
#define UTIL_H
#include <thread>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
namespace fs = filesystem;
/**
 * 删除指定路径的目录
 * @param path 要删除的目录路径
 * @return 0 表示成功删除，-1 表示删除失败
 */
int rmDir(const char *path);
/**
 * 创建指定路径的目录
 * @param path 要创建的目录路径
 * @return 0 表示成功创建，-1 表示创建失败
 */
int mkDir(const char *path);
/**
 * 列出指定目录下的所有文件
 * @param path 要列出文件的目录路径
 * @param files 用于存储文件路径的向量
 * @return 0 表示成功列出文件，-1 表示列出文件失败
 */
int listFilesInDirectory(const string& path,vector<string>& files);
/**
* 使用当前时间戳创建一个临时目录
* @param parentDir 父目录路径
* @param subdirectory 子目录路径
* @return 0 表示成功创建，-1 表示创建失败
*/
int mkDirTmp(string parentDir,string& subdirectory);
/**
* 复制文件，仅当目标文件不存在时执行复制操作
* @param source 源文件路径
* @param destination 目标文件路径
* @return true 表示复制成功，false 表示目标文件已存在或复制失败
*/
int copyFileIfNotExists(const char* source, const char* destination);
/**
* 获取指定路径的文件名
* @param filePath 文件路径
* @return 文件名
*/
string getFileName(const string& filePath);
/**
* 将字符串写入文件
* @param fileName 文件名
* @param content 文件内容
* @return 0 表示成功，-1 表示失败
*/
int stringWriteFile(const char *fileName,string content);
/**
* 分割字符串
* @param str 字符串
* @param delimiter 分隔符
* @return 分割后的字符串数组
*/
vector<string> string_split(const string& str,const char* delimiter);
/**
 * 创建指定路径的目录
 * @param path 要创建的目录路径
 * @return 0 表示成功创建，-1 表示创建失败
 */
int mkDir(const char *path);
/**
* 复制文件 如果目标文件不存在 则复制 如果存在 则不复制
* @param source 源文件路径
* @param destination 目标文件路径
* @return true 表示复制成功，false 表示复制失败
*/
int copyFileIfNotExists(const char* source, const char* destination);

/**
 * 检查指定路径的目录是否存在
 * @param path 要检查的目录路径
 * @return 0 表示目录存在，-1 表示目录不存在
 */
int post(const char* url,string data,string* output);
/**
* 域名解析
* @param id 登录ID
* @param token 登录token
* @param domain 域名
* @param sub_domain 子域名
* @param type 类型
* @param value 值
* @return 0 成功 -1 失败
*/
int dnspod(string id,string token,string domain,string sub_domain,string type,string value);

/**
* 输出 到指定路径 包括依赖
* @param savePath 保存路径
* @param appPath app路径
* @return 0 成功 -1 失败
*/
int output_app(const char *savePath,string appPath);
/**
* 恢复程序 包括依赖
* @param savePath 保存路径
* @return 0 成功 -1 失败
*/
int input_app(const char *savePath);


/**
* 安装指定的应用程序
* @param appName 应用程序的名称
* @return 0 表示成功，-1 表示失败
*/
int install(const char *appName);
int openssh();





























#endif